Skip to content

Specify learned search for DSE and Place and Route - #12

Open
dkupsh wants to merge 1 commit into
PolyArch:mainfrom
dkupsh:ml-specs
Open

Specify learned search for DSE and Place and Route#12
dkupsh wants to merge 1 commit into
PolyArch:mainfrom
dkupsh:ml-specs

Conversation

@dkupsh

@dkupsh dkupsh commented Aug 12, 2026

Copy link
Copy Markdown

Adds the ML search specification set and the three contract changes elsewhere in the stack that it depends on. Documentation only; no code or test changes.

Nine ML search documents

Split into a shared core and two concrete searches.

Core — what every learned search shares, defining no design space and no policy head of its own:

  • spec-ml-core-environment.md — graph observation projection, action indexing over a live enumeration, episode accounting, the integer reward boundary, reproducible parallel sampling
  • spec-ml-core-model.md — disjoint-union graph batching, encoder inputs, the graph-transformer trunk, graph context, value head, masking, action distribution, checkpoint boundary
  • spec-ml-core-training.md — immutable component config views, algorithm binding and multi-stage handoff, exact hyperparameters and schedules, test-set execution, run identity

DSEspec-ml-dse-environment.md, spec-ml-dse-model-architecture.md, spec-ml-dse-training.md: typed design decisions over one fabric.module or fabric.system, the hierarchical policy head over them, and the PPO run plus offline corpus that fits it.

PnRspec-ml-pnr-environment.md, spec-ml-pnr-model-architecture.md, spec-ml-pnr-training.md: one exact Spatial PnR invocation as a sequence of typed Place and Route Actions, a two-factor policy head, and a two-stage run that imitates an annealer's demonstrations before going online.

In both searches the learner is a proposal policy over decisions some other owner already defined. No legality, mappability, or objective fact moves into these documents. docs/rationales/ml.md records why that boundary sits where it does and what was rejected on either side.

Supporting contract changes

VerifiedFabricClosure (spec-fabric-artifact.md, spec-adg-builder.md) — names the value that exists after independent reverification and before ArtifactStore::put, so a search harness can evaluate a candidate it may discard without publishing it. It is a transient in-process value, not an Artifact family, a persistent schema, or a second identity authority, and the Builder gains no second finalization path from it.

SearchPolicy.realization_move_radius (spec-pnr.md) — Bounded(r) forms a realization-binding proposal domain rather than filtering a draw taken from one, so a radius-emptied anchor is absent instead of drawn and retried. It is a search preference and never a legality authority; an empty neighborhood is not ProvenInfeasible. movableDecisionCount now counts the proposal domain, which coincides with A(M,C,S) under Unbounded. Every builtin profile selects Unbounded.

Ray as the stack's one modified dependency (spec-loom-stack.md) — the Loom-owned fork at externals/ray carries a graph-space sampler and connector patch that the ML environment contract requires. An upgrade pins both the fork commit and the upstream release it was rebased onto, since the patch stack is the difference between the two. The exact Gymnasium and PyTorch versions the ML documents target are pinned in the stack rather than in the documents that consume them.

🤖 Generated with Claude Code

Add nine ML search documents split into a shared core and two concrete
searches. ML Environment Core, ML Model Core, and ML Training Core own what
every learned search shares: graph observation projection, action indexing over
a live enumeration, episode accounting, the integer reward boundary, the
disjoint-union batch and graph-transformer trunk, and the run identity and
checkpoint boundary. The DSE and PnR environment, model-architecture, and
training documents own their own decision spaces on top of that core, and own
no legality, mappability, or objective fact.

Name the one intermediate the search harness needs from the Fabric pipeline.
VerifiedFabricClosure is the value after independent reverification and before
ArtifactStore::put, so a harness may evaluate and discard a candidate without
publishing it. It is a transient in-process value, not an Artifact family, a
persistent schema, or a second identity authority, and it gives the ADG Builder
no second finalization path.

Add SearchPolicy.realization_move_radius to Place and Route. Bounded(r) forms a
realization-binding proposal domain rather than filtering a draw taken from
one, so a radius-emptied anchor is absent instead of drawn and retried. It is a
search preference and never a legality authority, and movableDecisionCount now
counts the proposal domain, which coincides with A(M,C,S) under Unbounded.

Record Ray as the stack's one modified dependency. The Loom-owned fork at
externals/ray carries a graph-space sampler and connector patch that the ML
environment contract requires, an upgrade pins both the fork commit and the
upstream release it was rebased onto, and the exact Gymnasium and PyTorch
versions the ML documents target are pinned in the stack rather than in the
documents that consume them.

Documentation only; no code or test changes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant